#include<iostream>
using namespace std;
/*
注意事项：
1、自动类型推导，必须推导出一致的数据类型T，才可以使用
2、模板必须要确定出T的数据类型，才可以使用
*/
template<class T>//typename可以替换成class
void mySwap(T &a,T &b)
{
    T temp=a;
    a=b;
    b=temp;
}
void test01()
{
    int a=10;
    int b=20;
    char c='c';
    //1、自动类型推导，必须推导出一致的数据类型T，才可以使用
    mySwap(a,b);//正确
    // mySwap(a,c);//错误，推导不出一致的T类型
    cout<<"交换第一次"<<endl;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
}
//2、模板必须要确定出T的数据类型，才可以使用
template<class T>
void func()
{
    cout<<"func调用"<<endl;
}
void test02()
{
    func<int>();
}
int main()
{
    test01();
    test02();
}
/*
总结：使用模板时必须确定出通用数据类型T，并且能够推导出一致的类型
*/